package br.com.linkideias.model.bean;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Transient;

import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
public class Empresa {
	
	private Integer codigo;
	private String cnpj;
	private String razao;
	private String nomeFantasia;
	private String site;
	private String nome;
	private String email;
	private String telefoneFixo;
	private String telefoneCelular;
	private Login login;
	private Ramo ramo;
	private Porte porte;
	private Endereco endereco;
	private List<IdeiaPcc> ideiasPcc;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	
	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	
	
	public String getCnpj() {
		return cnpj;
	}
	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}
	public String getRazao() {
		return razao;
	}
	public void setRazao(String razao) {
		this.razao = razao;
	}
	public String getNomeFantasia() {
		return nomeFantasia;
	}
	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}
	public String getSite() {
		return site;
	}
	public void setSite(String site) {
		this.site = site;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefoneFixo() {
		return telefoneFixo;
	}
	public void setTelefoneFixo(String telefoneFixo) {
		this.telefoneFixo = telefoneFixo;
	}
	public String getTelefoneCelular() {
		return telefoneCelular;
	}
	public void setTelefoneCelular(String telefoneCelular) {
		this.telefoneCelular = telefoneCelular;
	}
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="ramo_codigo")	
	public Ramo getRamo() {
		return ramo;
	}
	public void setRamo(Ramo ramo) {
		this.ramo = ramo;
	}
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="porte_codigo")
	public Porte getPorte() {
		return porte;
	}
	public void setPorte(Porte porte) {
		this.porte = porte;
	}
	//@ManyToOne(fetch=FetchType.LAZY)
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="endereco_codigo")
	public Endereco getEndereco() {
		return endereco;
	}
	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}
	
	@OneToOne(cascade = { CascadeType.ALL }, fetch=FetchType.LAZY)
	public Login getLogin() {
		return login;
	}
	
	public void setLogin(Login login) {
		this.login = login;
	}
	@OneToMany(fetch=FetchType.LAZY, mappedBy="empresa")
	@Fetch(value=FetchMode.SELECT)
	public List<IdeiaPcc> getIdeiasPcc() {
		return ideiasPcc;
	}
	public void setIdeiasPcc(List<IdeiaPcc> ideiasPcc) {
		this.ideiasPcc = ideiasPcc;
	}
	@Transient
	public boolean isValido() {
		if(nome != null && nome.length() > 2)
			return true;
		return false;
	}
}
